package com.shujia.wyh.day26;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/*

        <T> Future<T> submit(Callable<T> task)
        提交值返回任务以执行，并返回代表任务待处理结果的Future。
        创建线程的第三种方式，需要结合线程池一起使用：

      面试题：java种实现线程的方式有几种
        回答：
        有两种，一种是继承Thread类，重写run方法，使用start启动线程；
        另一种是实现Runnable接口，实现run方法，借助Thread类创建线程对象，使用start方法启动；
        其实还有一种方式实现，实现Callable接口，实现call方法，需要结合线程池的方式创建线程对象，提交到线程池执行。

 */
public class CallableDemo {
    public static void main(String[] args) {
        MyCallable myCallable = new MyCallable();

        //结合线程池使用
        //创建一个线程池对象
        ExecutorService pool = Executors.newFixedThreadPool(2);

        pool.submit(myCallable);
        pool.submit(myCallable);

        //关闭线程池
        pool.shutdown();
    }
}
